home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / pao / towns / paolib / sysinf.asm < prev    next >
Assembly Source File  |  1991-10-18  |  4KB  |  138 lines

  1. ;==============================================================================
  2. ;    << 386ASM V2.0 >>  for  FM TOWNS
  3. ;==============================================================================
  4. .386p
  5.         PAGE        60,132
  6.         NAME        SYS_getinf
  7.         TITLE        GET SYSTEM INFORMATION
  8. ;==============================================================================
  9. ;    システム情報の取得
  10. ;
  11. ;    < High C からの呼出形式 >
  12. ;    unsigned char    sysbuf[200] ;
  13. ;    int SYS_getinf( unsigned char *sysbuf ) ;
  14. ;    -------------------------------------------
  15. ;    int DRV_single() ;
  16. ;        =0    : シングルモードの設定無し
  17. ;        =0ffH :                有り
  18. ;
  19. ;    < note > : TABS = 4
  20. ;
  21. ;    < History >
  22. ;    1990.01.18 : CREATE
  23. ;    1991.04.23 : 清書
  24. ;
  25. ;    Programmed by Y.Hirata ( Nifty-ID : NAB03321 )
  26. ;==============================================================================
  27. ;
  28. INCLUDE    hc.inc                                ;
  29. ;
  30. CGROUP    GROUP pmcode, CODE                    ;
  31. DGROUP    GROUP pmdata, DATA                    ;
  32. ;
  33. ;--------------------------------------------
  34.         public    SYS_getinf                    ; システム情報の取得
  35.         public    DRV_single                    ; シングルドライブモードチェック
  36. ;--------------------------------------------
  37. ;
  38. INCLUDE    rbios.inc                            ; ネイティブからリアルBIOSを
  39.                                             ; 呼ぶための処理
  40. ;
  41. ;
  42. ;********************************************
  43. ;            定数定義
  44. ;********************************************
  45. ;
  46. SCHK_OFF    EQU            0446H                ; SINGLE MODE CHECK
  47. ;
  48. ;////////////////////////////////////////////
  49. ;            ネイティブ部
  50. ;////////////////////////////////////////////
  51. ;
  52. pmcode    SEGMENT                                ;
  53.         ASSUME    cs:CGROUP,ds:DGROUP            ;
  54. ;
  55.         ALIGN    4                            ;
  56. ;
  57. ;********************************************
  58. ;    GET SETUP INFORMATION
  59. ;********************************************
  60.             db    'SYS_getinf'                ;
  61. ;
  62. ;--------------------------------------------
  63. ;    システム情報の取得
  64. ;--------------------------------------------
  65.         ALIGN    4                            ; dword boundary
  66. SYS_getinf    PROC    NEAR                    ;
  67. ;
  68. #datasize    EQU    50                            ; DATA SIZE (BIOS OUTPUT)
  69. #int_no        EQU    08Eh                        ; INTERRUPT NUMBER
  70. #function    EQU    00h                            ; FUNCTION NO.
  71. #outparm1    EQU    SS:[ebp+8]                    ; DATA ADRESS
  72. ;
  73.             push    ebp                        ;
  74.             mov        ebp,esp                    ; スタックフレーム形成
  75. ;
  76.             cld                                ;
  77.             push    ds                        ;
  78.             push    es                        ;
  79.             push    esi                        ;
  80.             push    edi                        ;
  81.             push    ebx                        ;
  82.             push    ecx                        ;
  83.             call    Make_bufs                ; DOS-Extenderのバッファ確保
  84. ;
  85.             xor        eax,eax
  86.             mov        ah,#function            ; FUNCTION NO.
  87.             mov        di,word PTR RBIOS_rmoff    ;
  88.             push    dword PTR RBIOS_rmseg    ; ES
  89.             push    dword PTR RBIOS_rmseg    ; DS
  90.             push    dword PTR #int_no        ; INTERRUPT NO.
  91.             call    RBIOS_call                ; CALL REAL MODE BIOS
  92.             add        esp,12                    ;
  93. ;
  94.             mov        ecx,#datasize            ;
  95.             push    ds                        ;
  96.             pop        es                        ;
  97.             mov        edi,#outparm1            ;
  98.             mov        esi,dword PTR RBIOS_pmoff
  99.                                             ;
  100.             mov        ds,word PTR RBIOS_pmseg    ;
  101.     rep        movsd                            ;
  102.             movzx    eax,ah                    ; SET RETURN CODE
  103. ;
  104.             pop        ecx                        ;
  105.             pop        ebx                        ;
  106.             pop        edi                        ;
  107.             pop        esi                        ;
  108.             pop     es                        ;
  109.             pop     ds                        ;
  110. ;
  111.             pop        ebp                        ; スタックフレーム開放
  112.             ret                                ;
  113. SYS_getinf    ENDP                            ;
  114. ;
  115. ;--------------------------------------------
  116. ;    シングルドライブモードのチェック
  117. ;--------------------------------------------
  118.         ALIGN    4                            ; dword boundary
  119. DRV_single    PROC    NEAR                    ;
  120.             push    ebp                        ;
  121.             mov        ebp,esp                    ; スタックフレーム形成
  122. ;
  123.             push    fs                        ;
  124.             push    REALSEG                    ;
  125.             pop        fs                        ;
  126.             xor        eax,eax                    ;
  127.             mov        al,byte PTR fs:[SCHK_OFF]
  128.             pop        fs                        ;
  129. ;
  130.             pop        ebp                        ; スタックフレーム開放
  131.             ret                                ;
  132. DRV_single    endp                            ;
  133. ;
  134. pmcode        ENDS                            ;
  135. ;
  136.         END
  137.  
  138.